Function TrataErroDB(Erro:edatabaseerror): Integer;
begin
//Este cdigo foi utilizado para Interbase
//Para utilizar em outros banco de dados  so trocar as mensagens entre ''

  //copia um trecho da mensagem para verificar
  if Copy(Uppercase(erro.Message),Length(erro.Message)-16,17) = 'MUST HAVE A VALUE' THEN begin
     //Exibe para o usurio a mensagem em portugus
     Application.MessageBox('H campos obrigatrios em branco ou duplicados. Por favor verifique!!','Validao de Dados',MB_ICONINFORMATION+IDOK);
     //Retorna um valor para identificar o tipo de erro
     Result:= 101;
     end;
  if Copy(Uppercase(erro.Message),1,27) = 'VALIDATION ERROR FOR COLUMN' THEN begin
     Application.MessageBox('H campos obrigatrios em branco ou duplicados. Por favor verifique!!','Validao de Dados',MB_ICONINFORMATION+IDOK);
     Result:= 102;
     end;
  if Copy(Uppercase(erro.Message),1,34) = 'VIOLATION OF PRIMARY OR UNIQUE KEY' THEN begin
     Application.MessageBox('Este item j est cadastrado!! Execute a pesquisa.','Validao de Dados',MB_ICONINFORMATION+IDOK);
     Result:= 103;
     end;
  if Copy(Uppercase(erro.Message),1,24) = 'VIOLATION OF FOREIGN KEY' THEN begin
     Application.MessageBox('Problema de integridade.'+#13+
                            'Incluso: O valor no existe na tabela de origem!! Execute a pesquisa.'+#13+
                            'Excluso: O registro de estar sendo utilizado em outra tabela.','Validao de Dados',MB_ICONINFORMATION+IDOK);
     Result:= 104;
     end;
  if Copy(Uppercase(erro.Message),Length(erro.Message)-12,13) = 'EMPTY DATASET' THEN begin
     Application.MessageBox('O tabela j est vazia!!','Validao de Dados',MB_ICONINFORMATION+IDOK);
     Result:= 105;
     end;
end;


procedure TFrmCadAsso.btnConfirmarClick(Sender: TObject);
begin
try
    if IBTAsso.State in [dsInsert, dsEdit] then begin
       IBTAsso.Post;
       IBTransAsso.CommitRetaining;
       end;//if state
    DBEdit1.SetFocus;
except
    on e:edatabaseerror do
    //No  necessrio tratar o retorno
    if TrataErroDB(e) = 102 then
      ShowMessage('Verifique os campos abaixo, obrigatrios: SIAPE, Nome, Nacionalidade, Naturalidade, Municpio de Residncia, Cargo, SIF e Banco.'); 
end;//try
